/**
 * @file user_gpio.h
 * @brief GPIO驱动头文件
 * 
 * 声明GPIO驱动相关的函数和数据结构。
 */

#ifndef USER_GPIO_H
#define USER_GPIO_H

#include <stdbool.h>
#include "driver/gpio.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 初始化GPIO
 * 
 * 根据配置初始化所有需要的GPIO引脚。
 */
void user_gpio_init(void);

/**
 * @brief 初始化LED
 * 
 * 初始化LED控制功能。
 */
void user_gpio_led_init(void);

/**
 * @brief 设置LED状态
 * 
 * @param state LED状态（true为开启，false为关闭）
 */
void user_gpio_set_led(bool state);

/**
 * @brief 切换LED状态
 * 
 * 切换LED的开关状态。
 */
void user_gpio_toggle_led(void);

/**
 * @brief 获取LED状态
 * 
 * @return bool LED当前状态
 */
bool user_gpio_get_led_state(void);

/**
 * @brief 设置GPIO电平
 * 
 * @param gpio_num GPIO编号
 * @param level 电平状态（0或1）
 */
void user_gpio_set_level(gpio_num_t gpio_num, uint32_t level);

/**
 * @brief 读取GPIO电平
 * 
 * @param gpio_num GPIO编号
 * @return int GPIO电平状态（0或1）
 */
int user_gpio_get_level(gpio_num_t gpio_num);

#ifdef __cplusplus
}
#endif

#endif // USER_GPIO_H